<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<title><tt>DataSource</tt> Objects and Connection Pools - The Java EE 5 Tutorial</title>
<meta name="robots" content="index,follow">
<meta name="robots" content="index,follow">
<meta name="date" content="2008-10-01">
<link rel="stylesheet" type="text/css" href="css/default.css">
<link rel="stylesheet" type="text/css" href="css/ipg.css">
<link rel="stylesheet" type="text/css" href="css/j5eetutorial.css">
</head>

<body>

<table border="0" cellpadding="5" cellspacing="0" width="100%">
<tbody>
   <tr valign="top">
      <td><p class="toc level1"><a href="docinfo.html">Document Information</a></p>
<p class="toc level1 tocsp"><a href="gexaf.html">Preface</a></p>
<p class="toc level1 tocsp"><a href="gfirp.html">Part&nbsp;I&nbsp;Introduction</a></p>
<p class="toc level2"><a href="bnaaw.html">1.&nbsp;&nbsp;Overview</a></p>
<p class="toc level2"><a href="gfiud.html">2.&nbsp;&nbsp;Using the Tutorial Examples</a></p>
<p class="toc level1 tocsp"><a href="bnadp.html">Part&nbsp;II&nbsp;The Web Tier</a></p>
<p class="toc level2"><a href="bnadr.html">3.&nbsp;&nbsp;Getting Started with Web Applications</a></p>
<p class="toc level2"><a href="bnafd.html">4.&nbsp;&nbsp;Java Servlet Technology</a></p>
<p class="toc level2"><a href="bnagx.html">5.&nbsp;&nbsp;JavaServer Pages Technology</a></p>
<p class="toc level2"><a href="bnajo.html">6.&nbsp;&nbsp;JavaServer Pages Documents</a></p>
<p class="toc level2"><a href="bnakc.html">7.&nbsp;&nbsp;JavaServer Pages Standard Tag Library</a></p>
<p class="toc level2"><a href="bnalj.html">8.&nbsp;&nbsp;Custom Tags in JSP Pages</a></p>
<p class="toc level2"><a href="bnaon.html">9.&nbsp;&nbsp;Scripting in JSP Pages</a></p>
<p class="toc level2"><a href="bnaph.html">10.&nbsp;&nbsp;JavaServer Faces Technology</a></p>
<p class="toc level2"><a href="bnaqz.html">11.&nbsp;&nbsp;Using JavaServer Faces Technology in JSP Pages</a></p>
<p class="toc level2"><a href="bnatx.html">12.&nbsp;&nbsp;Developing with JavaServer Faces Technology</a></p>
<p class="toc level2"><a href="bnavg.html">13.&nbsp;&nbsp;Creating Custom UI Components</a></p>
<p class="toc level2"><a href="bnawo.html">14.&nbsp;&nbsp;Configuring JavaServer Faces Applications</a></p>
<p class="toc level2"><a href="bnaxu.html">15.&nbsp;&nbsp;Internationalizing and Localizing Web Applications</a></p>
<p class="toc level1 tocsp"><a href="bnayk.html">Part&nbsp;III&nbsp;Web Services</a></p>
<p class="toc level2"><a href="bnayl.html">16.&nbsp;&nbsp;Building Web Services with JAX-WS</a></p>
<p class="toc level2"><a href="bnazf.html">17.&nbsp;&nbsp;Binding between XML Schema and Java Classes</a></p>
<p class="toc level2"><a href="bnbdv.html">18.&nbsp;&nbsp;Streaming API for XML</a></p>
<p class="toc level2"><a href="bnbhf.html">19.&nbsp;&nbsp;SOAP with Attachments API for Java</a></p>
<p class="toc level1 tocsp"><a href="bnblr.html">Part&nbsp;IV&nbsp;Enterprise Beans</a></p>
<p class="toc level2"><a href="bnbls.html">20.&nbsp;&nbsp;Enterprise Beans</a></p>
<p class="toc level2"><a href="bnbnb.html">21.&nbsp;&nbsp;Getting Started with Enterprise Beans</a></p>
<p class="toc level2"><a href="bnboc.html">22.&nbsp;&nbsp;Session Bean Examples</a></p>
<p class="toc level2"><a href="bnbpk.html">23.&nbsp;&nbsp;A Message-Driven Bean Example</a></p>
<p class="toc level1 tocsp"><a href="bnbpy.html">Part&nbsp;V&nbsp;Persistence</a></p>
<p class="toc level2"><a href="bnbpz.html">24.&nbsp;&nbsp;Introduction to the Java Persistence API</a></p>
<p class="toc level2"><a href="bnbrl.html">25.&nbsp;&nbsp;Persistence in the Web Tier</a></p>
<p class="toc level2"><a href="bnbrs.html">26.&nbsp;&nbsp;Persistence in the EJB Tier</a></p>
<p class="toc level2"><a href="bnbtg.html">27.&nbsp;&nbsp;The Java Persistence Query Language</a></p>
<p class="toc level1 tocsp"><a href="bnbwi.html">Part&nbsp;VI&nbsp;Services</a></p>
<p class="toc level2"><a href="bnbwj.html">28.&nbsp;&nbsp;Introduction to Security in the Java EE Platform</a></p>
<p class="toc level2"><a href="bnbyk.html">29.&nbsp;&nbsp;Securing Java EE Applications</a></p>
<p class="toc level2"><a href="bncas.html">30.&nbsp;&nbsp;Securing Web Applications</a></p>
<p class="toc level2"><a href="bncdq.html">31.&nbsp;&nbsp;The Java Message Service API</a></p>
<p class="toc level2"><a href="bncgv.html">32.&nbsp;&nbsp;Java EE Examples Using the JMS API</a></p>
<p class="toc level2"><a href="bncih.html">33.&nbsp;&nbsp;Transactions</a></p>
<p class="toc level2"><a href="bncjh.html">34.&nbsp;&nbsp;Resource Connections</a></p>
<p class="toc level3"><a href="bncji.html">Resources and JNDI Naming</a></p>
<div class="onpage">
<p class="toc level3"><a href=""><tt>DataSource</tt> Objects and Connection Pools</a></p>
</div>
<p class="toc level3"><a href="bncjk.html">Resource Injection</a></p>
<p class="toc level4"><a href="bncjk.html#bncjl">Field-Based Injection</a></p>
<p class="toc level4"><a href="bncjk.html#bncjm">Method-Based Injection</a></p>
<p class="toc level4"><a href="bncjk.html#bncjn">Class-Based Injection</a></p>
<p class="toc level5"><a href="bncjk.html#bncjo">Declaring Multiple Resources</a></p>
<p class="toc level3 tocsp"><a href="bncjp.html">The <tt>confirmer</tt> Example Application</a></p>
<p class="toc level4"><a href="bncjp.html#bncjq">Running the <tt>confirmer</tt> Example Application</a></p>
<p class="toc level5"><a href="bncjp.html#bncjr">Creating a Mail Session</a></p>
<p class="toc level5"><a href="bncjp.html#bncjs">Building, Packaging, and Deploying <tt>confirmer</tt> in NetBeans IDE</a></p>
<p class="toc level5"><a href="bncjp.html#bncjt">Building, Packaging, and Deploying <tt>confirmer</tt> Using Ant</a></p>
<p class="toc level5"><a href="bncjp.html#bncju">Running the <tt>confirmer</tt> Client in NetBeans IDE</a></p>
<p class="toc level5"><a href="bncjp.html#bncjv">Running the <tt>confirmer</tt> Client Using Ant</a></p>
<p class="toc level3 tocsp"><a href="bncjw.html">Further Information about Resources</a></p>
<p class="toc level2 tocsp"><a href="bncjx.html">35.&nbsp;&nbsp;Connector Architecture</a></p>
<p class="toc level1 tocsp"><a href="bnckn.html">Part&nbsp;VII&nbsp;Case Studies</a></p>
<p class="toc level2"><a href="bncko.html">36.&nbsp;&nbsp;The Coffee Break Application</a></p>
<p class="toc level2"><a href="bnclz.html">37.&nbsp;&nbsp;The Duke's Bank Application</a></p>
<p class="toc level1 tocsp"><a href="gexbq.html">Part&nbsp;VIII&nbsp;Appendixes</a></p>
<p class="toc level2"><a href="bncno.html">A.&nbsp;&nbsp;Java Encoding Schemes</a></p>
<p class="toc level2"><a href="bncnq.html">B.&nbsp;&nbsp;Preparation for Java EE Certification Exams</a></p>
<p class="toc level2"><a href="bncnt.html">C.&nbsp;&nbsp;About the Authors</a></p>
<p class="toc level1 tocsp"><a href="idx-1.html">Index</a></p>
</td>
      <td width="10px">&nbsp;</td>
      <td width="705px">
         <div class="header">
             <div class="header-links-top">
                 <a href="http://java.sun.com">java.sun.com</a> |
                 <a href="http://docs.sun.com/">docs.sun.com</a><br>
             </div> 
             <img src="graphics/tutorialBanner.gif" width="704" height="120" alt="The Java&trade; EE 5 Tutorial"/>
             <div class="header-links">
	         <a href="index.html">Home</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/information/download.html">Download</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/doc/JavaEETutorial.pdf">PDF</a> |
                 <a href="http://java.sun.com/javaee/5/docs/api/index.html">API</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/information/faq.html">FAQ</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/information/search.html">Search</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/information/sendusmail.html">Feedback</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/information/history.html">History</a>
             </div>
             <div class="navigation">
                 <a href="bncji.html"><img style="padding-right: 3px" src="graphics/leftButton.gif" border="0"></a>
                 <a href="sjsaseej2eet.html"><img style="padding-right: 3px" src="graphics/upButton.gif" border="0"></a>
                 <a href="bncjk.html"><img style="padding-left: 3px" src="graphics/rightButton.gif" border="0"></a>
             </div>
         </div>

	 <div class="maincontent">      	 
             

<a name="bncjj"></a><h3><tt>DataSource</tt> Objects and Connection Pools</h3>
<p><a name="indexterm-3084"></a>To store, organize, and retrieve data, most applications use a relational database. Java
EE 5 components may access relational databases through the JDBC API. For information on
this API, see <a href="http://java.sun.com/products/jdbc">http://java.sun.com/products/jdbc</a>.</p><p><a name="indexterm-3085"></a><a name="indexterm-3086"></a><a name="indexterm-3087"></a>In the JDBC API, databases are accessed by using <tt>DataSource</tt> objects. A <tt>DataSource</tt> has
a set of properties that identify and describe the real world data source
that it represents. These properties include information such as the location of the
database server, the name of the database, the network protocol to use to
communicate with the server, and so on. In the Application Server, a data
source is called a JDBC resource.</p><p><a name="indexterm-3088"></a>Applications access a data source using a connection, and a <tt>DataSource</tt> object
can be thought of as a factory for connections to the particular data
source that the <tt>DataSource</tt> instance represents. In a basic <tt>DataSource</tt> implementation, a call to
the <tt>getConnection</tt> method returns a connection object that is a physical connection to
the data source.</p><p>If a <tt>DataSource</tt> object is registered with a JNDI naming service, an application
can use the JNDI API to access that <tt>DataSource</tt> object, which can
then be used to connect to the data source it represents.</p><p><a name="indexterm-3089"></a><tt>DataSource</tt> objects that implement connection pooling also produce a connection to the particular
data source that the <tt>DataSource</tt> class represents. The connection object that the <tt>getConnection</tt>
method returns is a handle to a <tt>PooledConnection</tt> object rather than being a physical
connection. An application uses the connection object in the same way that it
uses a connection. Connection pooling has no effect on application code except that
a pooled connection, like all connections, should always be explicitly closed. When an
application closes a connection that is pooled, the connection is returned to a
pool of reusable connections. The next time <tt>getConnection</tt> is called, a handle to
one of these pooled connections will be returned if one is available. Because connection
pooling avoids creating a new physical connection every time one is requested, applications
can run significantly faster.</p><p>A JDBC connection pool is a group of reusable connections for a
particular database. Because creating each new physical connection is time consuming, the server maintains
a pool of available connections to increase performance. When an application requests a
connection, it obtains one from the pool. When an application closes a connection,
the connection is returned to the pool.</p><p>Applications that use the Persistence API specify the <tt>DataSource</tt> object they are
using in the <tt>jta-data-source</tt> element of the <tt>persistence.xml</tt> file.</p><pre>&lt;jta-data-source>jdbc/MyOrderDB&lt;/jta-data-source></pre><p>This is typically the only reference to a JDBC object for a
persistence unit. The application code does not refer to any JDBC objects. For
more details, see <a href="bnbqw.html#bnbrj">Persistence Units</a>.</p>
         </div>
         <div class="navigation">
             <a href="bncji.html"><img style="padding-right: 3px" src="graphics/leftButton.gif" border="0"></a>
             <a href="sjsaseej2eet.html"><img style="padding-right: 3px" src="graphics/upButton.gif" border="0"></a>
             <a href="bncjk.html"><img style="padding-left: 3px" src="graphics/rightButton.gif" border="0"></a>
         </div>

         <div class="copyright">
      	    <p>The material in The Java&trade; EE 5 Tutorial is <a href='docinfo.html'>copyright</a>-protected and may not be published in other works without express written permission from Sun Microsystems.</p>
      	 </div>

      </td>
   </tr>
</tbody>
</table>
</body>
</html>

